//创建一个全是大写的数组
var bigArr = [];
for (var i = 65; i <= 90; i++) {
    var s = String.fromCodePoint(i);
    bigArr.push(s);
}
//测试大写数组
console.log(bigArr);
//创建一个全是小写的数组
var smallArr = [];
for (var i = 97; i <= 122; i++) {
    var s = String.fromCharCode(i);
    smallArr.push(s);
}
//测试小写数组
console.log(smallArr);

//创建一个全是数字的数组
var numArr = [];
for (var i = 0; i <= 9; i++) {
    numArr.push('' + i);
}
//测试数字数组
console.log(numArr);
var allArr = smallArr.concat(bigArr, numArr);
//测试全部组合数组
console.log(allArr);


 //封装一个随机数函数
 function rand(min, max) {
    return parseInt(Math.random() * (max - min)) + min
}
//封装一个生成大写小写数字的验证码
function code(n) {
    //如果没有设置实参默认输出5位
    n = n || 5;

    var codeArr = [];
    for (var i = 0; i < n; i++) {
        codeArr.push(allArr[rand(0, allArr.length)]);
    }

    console.log(codeArr);   // 数组

    // 小写   大写   数字   
    var flag = 0;
    for (var i = 0; i < codeArr.length; i++) {
        // 判断输出的有小写 flag+1 
        if (smallArr.includes(codeArr[i])) {
            flag++;
            // 输出小写可能不止一个，只有找到一个就立即打断
            break;
        }
    }

    for (var i = 0; i < codeArr.length; i++) {
        // 判断输出的有大写 flag+1  
        if (bigArr.includes(codeArr[i])) {
            flag++;
            break;
        }
    }

    for (var i = 0; i < codeArr.length; i++) {
        // 判断输出的有数字 flag+1  
        if (numArr.includes(codeArr[i])) {
            flag++;
            break;
        }
    }
    //  如果flag=3 表明要的都有
    if (flag === 3) {
        return codeArr.join('');
    }
    return code(n);
}
